package com.ea.mapper;

import com.ea.domain.dto.ElectricGoodsSkuDTO;
import com.ea.domain.dto.ElectricSkuUpdateDTO;
import com.ea.domain.entity.ElectricGoodsSkuInfo;
import com.ea.domain.query.BackElectricSkuQueryDTO;
import com.ea.domain.vo.ElectricGoodsSkuVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 电器货品规格表 Mapper 接口
 * </p>
 *
 * @author 电器商城
 * @since 2022-11-29
 */
@Mapper
public interface ElectricGoodsSkuInfoMapper {

    /**
     * 批量添加货品规格
     * @param skuInfoList skuInfoList
     */
    void skuInfoBatchInsert(@Param("list") List<ElectricGoodsSkuInfo> skuInfoList);


    /**
     * 根据货品id查询对应的规格明细
     * @param goodsId goodsId
     * @return list
     */
    List<ElectricGoodsSkuInfo> selectAllByGoodsId(Long goodsId);

    /**
     * 根据货品id查询对应的规格明细
     * @param goodsId goodsId
     * @return list
     */
    List<ElectricGoodsSkuInfo> selectAllByGoodsIdBatch(List<Long> goodsId);

    /**
     * 根据规格id批量查找货品信息
     *
     * @param skuIdList
     * @return
     */
    List<ElectricGoodsSkuInfo> selectBySkuIdList(List<Long> skuIdList);

    /**
     * 根据货品id查询对应的规格明细
     * @param goodsId goodsId
     * @return list
     */
    List<ElectricGoodsSkuInfo> selectSkuByGoodsId(Long goodsId);

    /**
     * 根据skuId查找货品信息
     * @param skuId
     * @return
     */
    ElectricGoodsSkuInfo selectOneBySkuId(Long skuId);


    /**
     * 批量更新规格信息
     * @param list list
     */
    void updateSkuBatchList(List<ElectricSkuUpdateDTO> list);

    /**
     * 更新货品规格信息
     * @param skuInfo
     */
    void updateSkuInfo(ElectricGoodsSkuInfo skuInfo);

    /**
     * 批量更新规格信息
     * @param list list
     */
    boolean updateSkuStatusBatchList(List<ElectricSkuUpdateDTO> list);


    /**
     * 根据skuId修改规格状态
     * @param skuId
     * @param status
     * @return
     */
    boolean updateSkuStatusBySkuId(@Param("skuId") Long skuId, @Param("status")Integer status);

    /**
     * 根据条件查找规格货品信息
     * @param queryDTO
     * @return
     */
    List<ElectricGoodsSkuInfo> selectSkuByCondition(BackElectricSkuQueryDTO queryDTO);

    /**
     * 根据skuId查询货品明细信息
     * @param skuId
     * @return
     */
    ElectricGoodsSkuVO selectSkuDetailBySkuId(Long skuId);

    /**
     * 根据规格id查询详细信息
     * @param skuIdList skuIdList
     * @return list
     */
    List<ElectricGoodsSkuDTO> listElectricGoodsSkuDTOBySkuIdList(List<Long> skuIdList);
}
